/**
 * 错误处理工具模块
 * 
 * 提供统一的错误处理机制，包括：
 * 1. 日志记录
 * 2. 用户友好的错误提示
 * 3. 错误上报（如果需要）
 */

import { ElMessage } from 'element-plus';

/**
 * 全局错误处理函数
 * @param {Error} error - 错误对象
 * @param {string} message - 用户友好的错误消息
 * @param {Object} options - 额外选项
 * @param {boolean} options.silent - 是否静默处理错误（不显示UI提示）
 * @param {boolean} options.reportToBackend - 是否将错误上报到后端
 */
export const handleError = (error, message, options = {}) => {
  const { silent = false, reportToBackend = false } = options;
  
  // 1. 始终记录到控制台
  console.error(`[错误] ${message}:`, error);
  
  // 2. 显示用户界面提示（除非静默模式）
  if (!silent) {
    ElMessage.error(`${message}: ${error.message || '未知错误'}`);
  }
  
  // 3. 上报到后端（如果需要）
  if (reportToBackend) {
    // TODO: 实现错误上报逻辑
    // reportErrorToBackend(error, message);
  }
};

/**
 * 创建带有默认消息的错误处理器
 * @param {string} defaultMessage - 默认错误消息
 * @returns {Function} 配置好的错误处理函数
 */
export const createErrorHandler = (defaultMessage) => {
  return (error, customMessage, options) => {
    handleError(error, customMessage || defaultMessage, options);
  };
};

/**
 * 画布相关错误处理
 */
export const canvasErrorHandler = createErrorHandler('画布操作失败');

/**
 * 模板加载相关错误处理
 */
export const templateErrorHandler = createErrorHandler('模板操作失败');

/**
 * 文件操作相关错误处理
 */
export const fileErrorHandler = createErrorHandler('文件操作失败');
